package util;

import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import basicas.Time;

/**
 * Created by Junior on 26/10/2014.
 */
public class TimeHttp {

    public static List<Time> downloadTime(){
        try {
            URL url = new URL("https://dl.dropboxusercontent.com/s/zalx0pvtf78s70e/campeonatobrasileiro.json");
            HttpURLConnection conexao = (HttpURLConnection)
                    url.openConnection();
            conexao.setReadTimeout(10 * 1000);
            conexao.setConnectTimeout(15 * 1000);
            conexao.setDoInput(true);
            conexao.setRequestMethod("GET");
            conexao.connect();

            if (conexao.getResponseCode() == HttpURLConnection.HTTP_OK){
                return parseJson(conexao.getInputStream());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private static List<Time> parseJson(InputStream inputStream) throws Exception {

        Log.d("Time","Acessou !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        List<Time> times = new ArrayList<Time>();
        JSONObject jsonT = new JSONObject(streamToString(inputStream));
        Log.d("jsonT","jsonT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        JSONArray jsonClassificacao = jsonT.getJSONArray("classificacao");
        for (int i = 0; i < jsonClassificacao.length(); i++){
            JSONObject jsonTime = jsonClassificacao.getJSONObject(i);


            int id_time = jsonTime.getInt("equipe_id");
            String nome = jsonTime.getString("nome_popular");
            String escudo = jsonTime.getString("escudo_grande");
            String equipe_sigla = jsonTime.getString("equipe_sigla");
            String aproveitamento = jsonTime.getString("aproveitamento");
            int vitorias = jsonTime.getInt("vitorias");
            int derrotas = jsonTime.getInt("derrotas");
            int empates = jsonTime.getInt("empates");
            int gols_contra = jsonTime.getInt("gols_contra");
            int gols_pro = jsonTime.getInt("gols_pro");
            int jogos = jsonTime.getInt("jogos");
            int pontos = jsonTime.getInt("pontos");
            int saldo_gols = jsonTime.getInt("saldo_gols");

            times.add(new Time(id_time, nome, escudo, equipe_sigla, aproveitamento, vitorias, derrotas, empates, gols_contra, gols_pro, jogos, pontos, saldo_gols));

        }
        return times;
    }

    private static String streamToString(InputStream inputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int lidos;
        ByteArrayOutputStream bufferzao = new ByteArrayOutputStream();
        while ((lidos = inputStream.read(buffer)) > -1){
            bufferzao.write(buffer, 0, lidos);
        }
        return new String(bufferzao.toByteArray());
    }

}
